"use strict";
function printStatus(data) {
    console.log(data);
}
function printGender(e) {
    console.log(e);
}
printStatus("hello");
printGender("男");
function demo() {
    // 返回undefined 合法
    return undefined;
    // 一下返回则不合法
    // return null
    // return 1
    // return "1"
    // return true
    // return false
    // return  {}
    // return []
}
demo();
// 调用 void 类型的函数可以返回 undefined 或者其他类型
const f1 = function () {
    // return undefined
    return 66;
};
// 但是拿到的数据不可以实际操作：类似 if(xxx)
const xxx = f1(); // 66
// console.log(xxx);
// 简写前
class Person {
    constructor(name, age) {
        this.name = name;
        this.age = age;
    }
    speak() {
        console.log(`${this.name} ${this.age}`);
    }
}
// Person 简写 Person2
class Person2 {
    // public 属性 可以直接访问 默认
    // private 属性 只能在类内部访问
    // protected 属性 只能在类内部和子类访问
    // readonly 只读属性 只能在类内部访问
    // static 静态属性 只能在类内部访问
    constructor(name, // 公共
    age, // 保护
    sex // 私有
    ) {
        this.name = name;
        this.age = age;
        this.sex = sex;
    }
    // 获取私有信息
    getPrivateSex() {
        return this.sex;
    }
    // 获取公共信息
    getInfo() {
        return `${this.name} ${this.age}`;
    }
    // 获取全部信息
    getFullInfo() {
        return `${this.getInfo()} ${this.getPrivateSex()}`;
    }
}
const p1 = new Person2("张三", 18, "**************");
// console.log(p1)
// p1.age = 19; // 只读 属性 不可修改
console.log(p1.getFullInfo());
// Student 继承(extends) Person
class Student extends Person {
    constructor(name, age, grade) {
        super(name, age);
        this.grade = grade;
    }
    study() {
        console.log(`${this.name} ${this.age}`);
    }
    // 覆盖 speak 方法
    speak() {
        console.log(`${this.name} ${this.age} ${this.grade}`);
    }
}
const p2 = new Student("李狗", 18, "高三");
// console.log(p1)
// p2.speak();
